#ifndef NODE_H
#define NODE_H

#include "iostream"

template<class T>
class Node
{
public:
    Node();
	~Node();

	void setData(T data);
	void setPrevious(Node<T> *previous);
	void setNext(Node<T> *next);
	T getData();
	Node<T> *getPrevious();
	Node<T> *getNext();

private:
	/* dato que almacena el nodo */
	T data;
	/* puntero al nodo anterior, para poder recorrer una lista de forma inversa  */
	Node<T> *previous;
	/* puntero al nodo siguiente */
	Node<T> *next;
};

template<class T>
Node<T>::Node()
{
	previous = NULL;
	next = NULL;
}

template<class T>
void Node<T>::setData(T data)
{
	this->data = data;
}

template<class T>
void Node<T>::setPrevious(Node<T> *previous)
{
	this->previous = previous;
}

template<class T>
void Node<T>::setNext(Node<T> *next)
{
	this->next = next;
}

template<class T>
T Node<T>::getData()
{
	return this->data;
}

template<class T>
Node<T> *Node<T>::getPrevious()
{
	return this->previous;
}

template<class T>
Node<T> *Node<T>::getNext()
{
	return this->next;
}

template<class T>
Node<T>::~Node(){

}

#endif // NODE_H
